/**
 * @author Vitor Franco do Carmo (vitor.carmo@cpmbraxis.com)
 * @since 22/05/2014
 */
package br.com.vfcfw.controller.validator;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

import br.com.vfcfw.commons.util.ConstantesArquitetura;
import br.com.vfcfw.commons.util.ValidacaoUtil;

/**
 * Classe {@link Validator} responsável pela validação de Título Eleitor.
 * 
 * @author Vitor Franco do Carmo (vitor.carmo@cpmbraxis.com)
 * @since 22/05/2014
 * 
 */
@FacesValidator("validator.tituloEleitorValidator")
@ManagedBean(name = "tituloEleitorValidator", eager = true)
@ApplicationScoped
public class TituloEleitorValidator extends BaseValidator {

    @Override
    public void validate(FacesContext facesContext, UIComponent component, Object valor) throws ValidatorException {

        if (possuiValor(valor)) {

            String tituloEleitor = valor.toString();

            if (!ValidacaoUtil.isTituloValido(tituloEleitor)) {

                FacesMessage msg;
                msg = new FacesMessage(obterMensagem(ConstantesArquitetura.MSG_ERRO_VALIDACAO_TITULO_ELEITOR));

                throw new ValidatorException(msg);
            }
        }
    }

}
